home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / _MozillaCookieJar.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  5KB  |  140 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''Mozilla / Netscape cookie loading / saving.'''
  5. import re
  6. import time
  7. import logging
  8. from cookielib import reraise_unmasked_exceptions, FileCookieJar, Cookie, MISSING_FILENAME_TEXT
  9.  
  10. class MozillaCookieJar(FileCookieJar):
  11.     """
  12.  
  13.     WARNING: you may want to backup your browser's cookies file if you use
  14.     this class to save cookies.  I *think* it works, but there have been
  15.     bugs in the past!
  16.  
  17.     This class differs from CookieJar only in the format it uses to save and
  18.     load cookies to and from a file.  This class uses the Mozilla/Netscape
  19.     `cookies.txt' format.  lynx uses this file format, too.
  20.  
  21.     Don't expect cookies saved while the browser is running to be noticed by
  22.     the browser (in fact, Mozilla on unix will overwrite your saved cookies if
  23.     you change them on disk while it's running; on Windows, you probably can't
  24.     save at all while the browser is running).
  25.  
  26.     Note that the Mozilla/Netscape format will downgrade RFC2965 cookies to
  27.     Netscape cookies on saving.
  28.  
  29.     In particular, the cookie version and port number information is lost,
  30.     together with information about whether or not Path, Port and Discard were
  31.     specified by the Set-Cookie2 (or Set-Cookie) header, and whether or not the
  32.     domain as set in the HTTP header started with a dot (yes, I'm aware some
  33.     domains in Netscape files start with a dot and some don't -- trust me, you
  34.     really don't want to know any more about this).
  35.  
  36.     Note that though Mozilla and Netscape use the same format, they use
  37.     slightly different headers.  The class saves cookies using the Netscape
  38.     header by default (Mozilla can cope with that).
  39.  
  40.     """
  41.     magic_re = '#( Netscape)? HTTP Cookie File'
  42.     header = '    # Netscape HTTP Cookie File\n    # http://www.netscape.com/newsref/std/cookie_spec.html\n    # This is a generated file!  Do not edit.\n\n'
  43.     
  44.     def _really_load(self, f, filename, ignore_discard, ignore_expires):
  45.         now = time.time()
  46.         magic = f.readline()
  47.         if not re.search(self.magic_re, magic):
  48.             f.close()
  49.             raise IOError('%s does not look like a Netscape format cookies file' % filename)
  50.         
  51.         
  52.         try:
  53.             while None:
  54.                 line = f.readline()
  55.                 if line == '':
  56.                     break
  57.                 
  58.                 if line.endswith('\n'):
  59.                     line = line[:-1]
  60.                 
  61.                 if line.strip().startswith('#') and line.strip().startswith('$') or line.strip() == '':
  62.                     continue
  63.                 
  64.                 (domain, domain_specified, path, secure, expires, name, value) = line.split('\t')
  65.                 secure = secure == 'TRUE'
  66.                 domain_specified = domain_specified == 'TRUE'
  67.                 if name == '':
  68.                     name = value
  69.                     value = None
  70.                 
  71.                 initial_dot = domain.startswith('.')
  72.                 discard = False
  73.                 if expires == '':
  74.                     expires = None
  75.                     discard = True
  76.                 
  77.                 c = Cookie(0, name, value, None, False, domain, domain_specified, initial_dot, path, False, secure, expires, discard, None, None, { })
  78.                 if not ignore_discard and c.discard:
  79.                     continue
  80.                 
  81.                 if not ignore_expires and c.is_expired(now):
  82.                     continue
  83.                 
  84.         except:
  85.             reraise_unmasked_exceptions((IOError,))
  86.             raise IOError('invalid Netscape format file %s: %s' % (filename, line))
  87.  
  88.  
  89.     
  90.     def save(self, filename = None, ignore_discard = False, ignore_expires = False):
  91.         if filename is None:
  92.             if self.filename is not None:
  93.                 filename = self.filename
  94.             else:
  95.                 raise ValueError(MISSING_FILENAME_TEXT)
  96.         
  97.         f = open(filename, 'w')
  98.         
  99.         try:
  100.             f.write(self.header)
  101.             now = time.time()
  102.             for cookie in self:
  103.                 if not ignore_discard and cookie.discard:
  104.                     continue
  105.                 
  106.                 if not ignore_expires and cookie.is_expired(now):
  107.                     continue
  108.                 
  109.                 if cookie.secure:
  110.                     secure = 'TRUE'
  111.                 else:
  112.                     secure = 'FALSE'
  113.                 if cookie.domain.startswith('.'):
  114.                     initial_dot = 'TRUE'
  115.                 else:
  116.                     initial_dot = 'FALSE'
  117.                 if cookie.expires is not None:
  118.                     expires = str(cookie.expires)
  119.                 else:
  120.                     expires = ''
  121.                 if cookie.value is None:
  122.                     name = ''
  123.                     value = cookie.name
  124.                 else:
  125.                     name = cookie.name
  126.                     value = cookie.value
  127.                 f.write('\t'.join([
  128.                     cookie.domain,
  129.                     initial_dot,
  130.                     cookie.path,
  131.                     secure,
  132.                     expires,
  133.                     name,
  134.                     value]) + '\n')
  135.         finally:
  136.             f.close()
  137.  
  138.  
  139.  
  140.